package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
)



func func1(c *gin.Context) {
	fmt.Println("我是函数 func1开始")
	// 空接口类型
	c.Set("name", "小螺号")
	c.Next()
	fmt.Println("我是函数 func1结束")
}
func func2(c *gin.Context) {
	fmt.Println("我是函数 func2开始")
	//c.Abort()
	fmt.Println("我是函数 func2结束")


}
func func3(c *gin.Context) {
	fmt.Println("我是函数 func3开始")
	c.Next()
	fmt.Println("我是函数 func3结束")
	// 中断
	//c.Abort()
}
func func4(c *gin.Context) {
	fmt.Println("我是函数 func4开始")
	// 提前调用
	//c.Next()
	fmt.Println("我是函数 func4结束")

}
func func5(c *gin.Context) {
	fmt.Println("我是函数 func5开始")
	v, ok := c.Get("name")
	if ok {
		name := v.(string) // 类型断言转换
		c.String(200, name)
	}

}

func main() {

	r := gin.Default()

	// 注册路由
	r.GET("/", func(c *gin.Context) {
		c.String(200, "ok")
	})
	// 中间件
	shopGroup := r.Group("/shop", func1, func2)
	shopGroup.Use(func3)
	{
		shopGroup.GET("/index", func4, func5)
	}
	r.Run(":9999")

}
